package cn.puge.insurance.mapper.domain;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * @ClassName: PugeInsurance
 * @Description: 普歌保险实体类
 * @Author: Gaoruiqi
 * @Date: 2025-11-11 19:42
 * @Version: 1.0
 **/

@Data
@TableName("puge_insurance")
public class PugeInsurance implements Serializable {

    @TableField(exist = false)
    private static final long serialVersionUID = 1L; // 序列化版本号
    /**
     * 主键id（自增）
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long insuranceId;

    /**
     * 用户ID
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 订单号
     */
    @TableField("order_no")
    private String orderNo;

    /**
     * 保单号
     */
    @TableField("insurance_no")
    private String insuranceNo;

    /**
     * 保险产品编号
     */
    @TableField("insurance_product_num")
    private String insuranceProductNum;

    /**
     * 投保人姓名
     */
    @TableField("insurance_name")
    private String insuranceName;

    /**
     * 投保人身份证
     */
    @TableField("insurance_id_card")
    private String insuranceIdCard;

    /**
     * 投保人手机号
     */
    @TableField("insurance_phone")
    private String insurancePhone;

    /**
     * 投保人邮箱
     */
    @TableField("insurance_email")
    private String insuranceEmail;

    /**
     * 被保人姓名
     */
    @TableField("insured_name")
    private String insuredName;

    /**
     * 被保人身份证
     */
    @TableField("insured_id_card")
    private String insuredIdCard;

    /**
     * 被保人手机号
     */
    @TableField("insured_phone")
    private String insuredPhone;

    /**
     * 职业类型
     */
    @TableField("occupation_type")
    private String occupationType;

    /**
     * 受益人与被保人关系
     */
    @TableField("beneficiary_relation")
    private String beneficiaryRelation;

    /**
     * 生效时间
     */
    @TableField("effective_time")
    private LocalDateTime effectiveTime;

    /**
     * 过期时间
     */
    @TableField("expire_time")
    private LocalDateTime expireTime;

    /**
     * 保险期限（如：1年、30年）
     */
    @TableField("limit_time")
    private String limitTime;

    /**
     * 缴纳保费金额
     */
    @TableField("premium_amount")
    private BigDecimal premiumAmount;

    /**
     * 总保额
     */
    @TableField("coverage_amount")
    private BigDecimal coverageAmount;

    /**
     * 电子保单文件路径
     */
    @TableField("insurance_file_url")
    private String insuranceFileUrl;

    /**
     * 投保状态：0-待审核，1-投保成功
     */
    @TableField("insurance_status")
    private Integer insuranceStatus;

    /**
     * 支付状态：0-待支付，1-支付成功，2-支付失败
     */
    @TableField("pay_status")
    private Integer payStatus;

    /**
     * 有无社保（含新农合）：0-有，1-无
     */
    @TableField("has_social_insurance")
    private Integer hasSocialInsurance;

    /**
     * 是否删除：0-正常，1-已删除（逻辑删除）
     */
    @TableField(value = "isuse", fill = FieldFill.INSERT)
    @TableLogic // 标记为逻辑删除字段
    private Integer isuse;

    /**
     * 创建时间（自动填充）
     */
    @TableField(value = "gmt_create", fill = FieldFill.INSERT)
    private LocalDateTime gmtCreate;

    /**
     * 更新时间（自动填充）
     */
    @TableField(value = "gmt_modified", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime gmtModified;

}
